home *** CD-ROM | disk | FTP | other *** search
/ Aminet 34 / Aminet 34 (2000)(Schatztruhe)[!][Dec 1999].iso / Aminet / util / libs / DateLib.lha / DateLib / Developer / C / examples / DateLib-Demo.c next >
Encoding:
C/C++ Source or Header  |  1999-06-06  |  38.2 KB  |  1,056 lines

  1.  /* Copyright © 1994-1999 Dipl.-Inform. Kai Hofmann. All rights reserved. */
  2.  
  3.  #include "system.h"
  4.  #include <stdio.h>
  5.  #include <math.h>
  6.  #include <exec/libraries.h>
  7.  #include <proto/exec.h>
  8.  #include <proto/date.h>
  9.  
  10.  
  11.  struct Library *DateBase;
  12.  
  13.  
  14.  static long readlongyear(void)
  15.   {
  16.    long year=0;
  17.  
  18.    DEBUG_ENTER("readlongyear")
  19.    printf("(long)year: "); fflush(stdout);
  20.    scanf("%ld",&year);
  21.    DEBUG_EXIT("readlongyear","%ld",year)
  22.    return(year);
  23.   }
  24.  
  25.  
  26.  static unsigned short readshortcardmonth(void)
  27.   {
  28.    unsigned short month=0;
  29.  
  30.    DEBUG_ENTER("readshortcardmonth")
  31.    do
  32.     {
  33.      printf("(unsigned short)month: "); fflush(stdout);
  34.      scanf("%hu",&month);
  35.     }
  36.    while ((month == 0) || (month > 12));
  37.    DEBUG_EXIT("readshortcardmonth","%lu",(unsigned long)month)
  38.    return(month);
  39.   }
  40.  
  41.  
  42.  static unsigned short readshortcardday(void)
  43.   {
  44.    unsigned short day=0;
  45.  
  46.    DEBUG_ENTER("readshortcardday")
  47.    do
  48.     {
  49.      printf("(unsigned short)day: "); fflush(stdout);
  50.      scanf("%hu",&day);
  51.     }
  52.    while ((day == 0) || (day > 31));
  53.    DEBUG_EXIT("readshortcardday","%lu",(unsigned long)day)
  54.    return(day);
  55.   }
  56.  
  57.  
  58.  static date_Weekdays readweekday(void)
  59.   {
  60.    unsigned short wday=0;
  61.  
  62.    DEBUG_ENTER("readweekday")
  63.    do
  64.     {
  65.      printf("weekday: 1=Monday; ...7=Sunday: "); fflush(stdout);
  66.      scanf("%hu",&wday);
  67.     }
  68.    while ((wday == 0) || (wday > 7));
  69.    DEBUG_EXIT("readweekday","%lu",(unsigned long)wday)
  70.    return((date_Weekdays)wday);
  71.   }
  72.  
  73.  
  74.  static long readlongdays(void)
  75.   {
  76.    long days=0;
  77.  
  78.    DEBUG_ENTER("readlongdays")
  79.    printf("(long)days: "); fflush(stdout);
  80.    scanf("%ld",&days);
  81.    DEBUG_EXIT("readlongdays","%ld",days)
  82.    return(days);
  83.   }
  84.  
  85.  
  86.  static long readlongmonths(void)
  87.   {
  88.    long months=0;
  89.  
  90.    DEBUG_ENTER("readlongmonths")
  91.    printf("(long)months: "); fflush(stdout);
  92.    scanf("%ld",&months);
  93.    DEBUG_EXIT("readlongmonths","%ld",months)
  94.    return(months);
  95.   }
  96.  
  97.  
  98.  static long readlongyears(void)
  99.   {
  100.    long years=0;
  101.  
  102.    DEBUG_ENTER("readlongyears")
  103.    printf("(long)years: "); fflush(stdout);
  104.    scanf("%ld",&years);
  105.    DEBUG_EXIT("readlongyears","%ld",years)
  106.    return(years);
  107.   }
  108.  
  109.  
  110.  static unsigned long readcardyear(void)
  111.   {
  112.    unsigned long year=0;
  113.  
  114.    DEBUG_ENTER("readcardyear")
  115.    printf("(unsigned long)year: "); fflush(stdout);
  116.    scanf("%lu",&year);
  117.    DEBUG_EXIT("readcardyear","%lu",year)
  118.    return(year);
  119.   }
  120.  
  121.  
  122.  static unsigned short readushortyear(void)
  123.   {
  124.    unsigned short year=0;
  125.  
  126.    DEBUG_ENTER("readushortyear")
  127.    do
  128.     {
  129.      printf("(unsigned short)year: "); fflush(stdout);
  130.      scanf("%hu",&year);
  131.     }
  132.    while (year > 99);
  133.    DEBUG_EXIT("readushortyear","%lu",(unsigned long)year)
  134.    return(year);
  135.   }
  136.  
  137.  
  138.  static unsigned long readlongcarddays(void)
  139.   {
  140.    unsigned long day=0;
  141.  
  142.    DEBUG_ENTER("readlongcarddays")
  143.    printf("(longcard)days: "); fflush(stdout);
  144.    scanf("%lu",&day);
  145.    DEBUG_EXIT("readlongcarddays","%lu",day)
  146.    return(day);
  147.   }
  148.  
  149.  
  150.  static unsigned short readshortcardhour(void)
  151.   {
  152.    unsigned short hour=0;
  153.  
  154.    DEBUG_ENTER("readshortcardhour")
  155.    do
  156.     {
  157.      printf("(unsigned short)hour: "); fflush(stdout);
  158.      scanf("%hu",&hour);
  159.     }
  160.    while (hour > 23);
  161.    DEBUG_EXIT("readshortcardhour","%lu",(unsigned long)hour)
  162.    return(hour);
  163.   }
  164.  
  165.  
  166.  static unsigned short readshortcardmin(void)
  167.   {
  168.    unsigned short min=0;
  169.  
  170.    DEBUG_ENTER("readshortcardmin")
  171.    do
  172.     {
  173.      printf("(unsigned short)min: "); fflush(stdout);
  174.      scanf("%hu",&min);
  175.     }
  176.    while (min > 59);
  177.    DEBUG_EXIT("readshortcardmin","%lu",(unsigned long)min)
  178.    return(min);
  179.   }
  180.  
  181.  
  182.  static unsigned short readshortcardsec(void)
  183.   {
  184.    unsigned short sec=0;
  185.  
  186.    DEBUG_ENTER("readshortcardsec")
  187.    do
  188.     {
  189.      printf("(unsigned short)sec: "); fflush(stdout);
  190.      scanf("%hu",&sec);
  191.     }
  192.    while (sec > 59);
  193.    DEBUG_EXIT("readshortcardsec","%lu",(unsigned long)sec)
  194.    return(sec);
  195.   }
  196.  
  197.  
  198.  static float readrealtime(void)
  199.   {
  200.    float jd=0.0;
  201.  
  202.    DEBUG_ENTER("readrealtime")
  203.    printf("(float)time: "); fflush(stdout);
  204.    scanf("%f",&jd);
  205.    if (jd >= 1.0)
  206.     {
  207.      jd -= (float)floor((double)jd);
  208.     }
  209.    DEBUG_EXIT("readrealtime","%f",jd)
  210.    return(jd);
  211.   }
  212.  
  213.  
  214.  static short readshortdegree(void)
  215.   {
  216.    short degree=0;
  217.  
  218.    DEBUG_ENTER("readshortdegree")
  219.    do
  220.     {
  221.      printf("(short)degree: "); fflush(stdout);
  222.      scanf("%hd",°ree);
  223.     }
  224.    while ((-180 > degree) || (degree > 180));
  225.    DEBUG_EXIT("readshortdegree","%ld",(long)degree)
  226.    return(degree);
  227.   }
  228.  
  229.  
  230.  static unsigned long readlongcardsecs(void)
  231.   {
  232.    unsigned long secs=0;
  233.  
  234.    DEBUG_ENTER("readlongcardsecs")
  235.    printf("(unsigned long)secs: "); fflush(stdout);
  236.    scanf("%lu",&secs);
  237.    DEBUG_EXIT("readlongcardsecs","%lu",secs)
  238.    return(secs);
  239.   }
  240.  
  241.  
  242.  static float readrealmeridian(void)
  243.   {
  244.    float jd=0.0;
  245.  
  246.    DEBUG_ENTER("readrealmeridian")
  247.    printf("(float)meridian: "); fflush(stdout);
  248.    scanf("%f",&jd);
  249.    DEBUG_EXIT("readrealmeridian","%f",jd)
  250.    return(jd);
  251.   }
  252.  
  253.  
  254.  static float readrealpos(void)
  255.   {
  256.    float jd=0.0;
  257.  
  258.    DEBUG_ENTER("readrealpos")
  259.    printf("(float)ps: "); fflush(stdout);
  260.    scanf("%f",&jd);
  261.    DEBUG_EXIT("readrealpos","%f",jd)
  262.    return(jd);
  263.   }
  264.  
  265.  
  266.  static date_Languages readlanguage(void)
  267.   {
  268.    unsigned short lang=0;
  269.  
  270.    DEBUG_ENTER("readlanguage")
  271.    do
  272.     {
  273.      printf("language: 0=locale.library; 1=English; 2=Deutsch; 3=francais; 4=espanol; 5=portugues; 6=dansk 7=italiano 8=nederlands 9=norsk 10=svenska 11=polski 12=suomalainen 13=magyar 14=greek 15=Esperanto 16=Turkish 17=Latin 18=Russian 19=Czech 20=Catalonian 21=Serbian: "); fflush(stdout);
  274.      scanf("%hu",&lang);
  275.     }
  276.    while (lang >= date_LASTLANGUAGE);
  277.    DEBUG_EXIT("readlanguage","%lu",(unsigned long)lang)
  278.    return((date_Languages)lang);
  279.   }
  280.  
  281.  
  282.  static unsigned long readjd(void)
  283.   {
  284.    unsigned long jd=0;
  285.  
  286.    DEBUG_ENTER("readjd")
  287.    printf("(unsigned long)jd: "); fflush(stdout);
  288.    scanf("%lu",&jd);
  289.    DEBUG_EXIT("readjd","%lu",jd)
  290.    return(jd);
  291.   }
  292.  
  293.  
  294.  static date_MoonPhases readmoonphase(void)
  295.   {
  296.    unsigned short moon=0;
  297.  
  298.    DEBUG_ENTER("readmoonphase")
  299.    do
  300.     {
  301.      printf("moon: 0=new; 1=first quarter; 2=full; 3=last quarter: "); fflush(stdout);
  302.      scanf("%hu",&moon);
  303.     }
  304.    while (moon > 3);
  305.    DEBUG_EXIT("readmoonphase","%lu",(unsigned long)moon)
  306.    return((date_MoonPhases)moon);
  307.   }
  308.  
  309.  
  310.  static date_DateTexts readdt(void)
  311.   {
  312.    unsigned short dt=0;
  313.  
  314.    DEBUG_ENTER("readdt")
  315.    do
  316.     {
  317.      printf("date text: 0=DAY; 1=MONTH; 2=YEAR; 3=WEEK; 4=WEEKDAY; 5=HOUR; 6=MINUTE; 7=SECOND; 8=YESTERDAY; 9=TODAY; 10=TOMORROW : "); fflush(stdout);
  318.      scanf("%hu",&dt);
  319.     }
  320.    while (dt > 10);
  321.    DEBUG_EXIT("readdt","%lu",(unsigned long)dt)
  322.    return((date_DateTexts)dt);
  323.   }
  324.  
  325.  
  326.  static date_WordClass readwordclass(void)
  327.   {
  328.    unsigned short wc;
  329.  
  330.    DEBUG_ENTER("readwordclass")
  331.    do
  332.     {
  333.      printf("word class: 0=SINGULAR; 1=PLURAL; 2=PERIODICAL: "); fflush(stdout);
  334.      scanf("%hu",&wc);
  335.     }
  336.    while (wc > 2);
  337.    DEBUG_EXIT("readwordclass","%lu",(unsigned long)wc)
  338.    return((date_WordClass)wc);
  339.   }
  340.  
  341.  
  342.  static long readlongsecs(void)
  343.   {
  344.    long secs=0;
  345.  
  346.    DEBUG_ENTER("readlongsecs")
  347.    printf("(long)secs: "); fflush(stdout);
  348.    scanf("%ld",&secs);
  349.    DEBUG_EXIT("readlongsecs","%ld",secs)
  350.    return(secs);
  351.   }
  352.  
  353.  
  354.  static date_Countries readcountry(void)
  355.   {
  356.    unsigned short country=0;
  357.  
  358.    DEBUG_ENTER("readcountry")
  359.    do
  360.     {
  361.      printf("country: 0=unknown; 1=Italia; 2=Deutschland; 3=Schweiz; 4=Danmark; 5=Nederland; 6=GreatBritain; 7=USA; 8=Sweden: "); fflush(stdout);
  362.      scanf("%hu",&country);
  363.     }
  364.    while (country >= date_LASTCOUNTRY);
  365.    DEBUG_EXIT("readcountry","%lu",(unsigned long)country)
  366.    return((date_Countries)country);
  367.   }
  368.  
  369.  
  370.  static void writeweekday(date_Weekdays wd)
  371.   {
  372.    DEBUG_ENTER("writeweekday")
  373.    switch (wd)
  374.     {
  375.      case date_dayerr    : printf("dayerr!\n");
  376.                            break;
  377.      case date_Monday    : printf("Monday\n");
  378.                            break;
  379.      case date_Tuesday   : printf("Tuesday\n");
  380.                            break;
  381.      case date_Wednesday : printf("Wednesday\n");
  382.                            break;
  383.      case date_Thursday  : printf("Thursday\n");
  384.                            break;
  385.      case date_Friday    : printf("Friday\n");
  386.                            break;
  387.      case date_Saturday  : printf("Saturday\n");
  388.                            break;
  389.      case date_Sunday    : printf("Sunday\n");
  390.                            break;
  391.      default             : printf("Illegal Code!\n");
  392.     }
  393.    DEBUG_EXIT("writeweekday","",0UL)
  394.   }
  395.  
  396.  
  397.  static void writebool(bool b)
  398.   {
  399.    DEBUG_ENTER("writebool")
  400.    if (b)
  401.     {
  402.      printf("true\n");
  403.     }
  404.    else
  405.     {
  406.      printf("false\n");
  407.     }
  408.    DEBUG_EXIT("writebool","",0UL)
  409.   }
  410.  
  411.  
  412.  static short readshortzonemin(void)
  413.   {
  414.    short min=0;
  415.  
  416.    DEBUG_ENTER("readshortzonemin")
  417.    do
  418.     {
  419.      printf("short)zone min: "); fflush(stdout);
  420.      scanf("%hd",&min);
  421.     }
  422.    while ((-780 > min) || (min > 780));
  423.    DEBUG_EXIT("readshortzonemin","%ld",(long)min)
  424.    return(min);
  425.   }
  426.  
  427.  
  428.  static bool readbooldst(void)
  429.   {
  430.    unsigned short dst=false;
  431.  
  432.    DEBUG_ENTER("readbooldst")
  433.    do
  434.     {
  435.      printf("(bool)DST: "); fflush(stdout);
  436.      scanf("%hu",&dst);
  437.     }
  438.    while (dst > 1);
  439.    DEBUG_EXIT("readbooldst","%lu",(unsigned long)dst)
  440.    return((bool)dst);
  441.   }
  442.  
  443.  
  444.  static unsigned short readshortcardchangehour(void)
  445.   {
  446.    unsigned short hour=0;
  447.  
  448.    DEBUG_ENTER("readshortcardchangehour")
  449.    do
  450.     {
  451.      printf("(unsigned short)change hour: "); fflush(stdout);
  452.      scanf("%hu",&hour);
  453.     }
  454.    while (hour > 23);
  455.    DEBUG_EXIT("readshortcardchangehour","%lu",(unsigned long)hour)
  456.    return(hour);
  457.   }
  458.  
  459.  
  460.  static time_ChangeDay readshortcardchangeday(short d)
  461.   {
  462.    unsigned short changeday=0;
  463.  
  464.    DEBUG_ENTER("readshortcardchangeday")
  465.    do
  466.     {
  467.      printf("change ");
  468.      if (d < 0)
  469.       {
  470.        printf("previous ");
  471.       }
  472.      else if (d > 0)
  473.       {
  474.        printf("next ");
  475.       }
  476.      printf("day: 0=Normal; 1=WinterToSummer; 2=SummerToWinter: "); fflush(stdout);
  477.      scanf("%hu",&changeday);
  478.     }
  479.    while (changeday > 2);
  480.    DEBUG_EXIT("readshortcardchangeday","%lu",(unsigned long)changeday)
  481.    return((time_ChangeDay)changeday);
  482.   }
  483.  
  484.  
  485.  static char *readtimeformatstring(void)
  486.   {
  487.    static char text[40] = "";
  488.  
  489.    DEBUG_ENTER("readtimeformatstring")
  490.    printf("\n%%q     - hour using 24-hour style\n");
  491.    printf("%%H     - hour using 24-hour style with leading 0s\n");
  492.    printf("%%Q     - hour using 12-hour style\n");
  493.    printf("%%I     - hour using 12-hour style with leading 0s\n");
  494.    printf("%%p     - AM or PM strings\n");
  495.    printf("%%M     - the number of minutes with leading 0s\n");
  496.    printf("%%S     - number of seconds with leadings 0s\n");
  497.    printf("%%R     - same as '%%H:%%M'\n");
  498.    printf("%%T     - same as '%%H:%%M:%%S'\n");
  499.    printf("%%X     - same as '%%H:%%M:%%S'\n");
  500.    printf("%%r     - same as '%%I:%%M:%%S %%p'\n");
  501.  
  502.    printf("%%Th1f  - hour using 12h style with leading 0s\n");
  503.    printf("%%Th1v  - hour using 12h style without leading 0s\n");
  504.    printf("%%Th2f  - hour using 24h style with leading 0s\n");
  505.    printf("%%Th2v  - hour using 24h style without leading 0s\n");
  506.    printf("%%Tpso  - a/p\n");
  507.    printf("%%Tpsu  - A/P\n");
  508.    printf("%%Tplo  - am/pm\n");
  509.    printf("%%Tplu  - AM/PM\n");
  510.    printf("%%Tmf   - minute with leading 0s\n");
  511.    printf("%%Tmv   - minute without leading 0s\n");
  512.    printf("%%Tsf   - second with leading 0s\n");
  513.    printf("%%Tsv   - second without leading 0s\n");
  514.    printf("%%Tj0   - jd time starting with '0.'\n");
  515.    printf("%%Tj.   - jd time starting with '.'\n");
  516.    printf("%%Tzh?? - timezone hours only\n");
  517.    printf("%%Tzm?  - timezone: 0100 (always with leading 0s)\n");
  518.    printf("%%TzM?? - timezone: 01:00\n");
  519.    printf("%%Tz??f - timezone: use leading 0s\n");
  520.    printf("%%Tz??v - timezone: don not use leading 0s\n");
  521.    printf("%%Tz?z? - timezone: use Z   for UTC\n");
  522.    printf("%%Tz?0? - timezone: use +00 for UTC\n");
  523.    printf("%%Tc1   - Use DST for s->w switch\n");
  524.    printf("%%Tc2   - Use I/II for s->w switch\n");
  525.    printf("%%Tc3   - Use a/b for s->w switch (24h only) - on 12h falls back to 2\n");
  526.  
  527.    printf("\nTimeFormat string: "); fflush(stdout);
  528.    scanf("%s",text);
  529.    DEBUG_EXIT("readtimeformatstring","%s",text)
  530.    return(text);
  531.   }
  532.  
  533.  
  534.  static char *readparsestring(void)
  535.   {
  536.    static char text[47] = "";
  537.  
  538.    DEBUG_ENTER("readparsestring")
  539.    printf("String to parse: "); fflush(stdout);
  540.    scanf("\n%[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,.- /:äöüßÄÖÜß]",text);
  541.    DEBUG_EXIT("readparsestring","%s",text)
  542.    return(text);
  543.   }
  544.  
  545.  
  546.  static char *readdateformatstring(void)
  547.   {
  548.    static char text[40] = "";
  549.  
  550.    DEBUG_ENTER("readdateformatstring")
  551.    printf("\n%%d    - day number with leading 0s\n");
  552.    printf("%%e    - day number with leading spaces\n");
  553.    printf("%%m    - month number with leading 0s\n");
  554.    printf("%%h    - abbreviated month name\n");
  555.    printf("%%b    - abbreviated month name\n");
  556.    printf("%%B    - month name\n");
  557.    printf("%%y    - year using two digits with leading 0s\n");
  558.    printf("%%Y    - year using four digits with leading 0s\n");
  559.    printf("%%j    - julian date\n");
  560.    printf("%%w    - weekday number\n");
  561.    printf("%%a    - abbreviated weekday name\n");
  562.    printf("%%A    - weekday name\n");
  563.    printf("%%U    - week number, taking Sunday as first day of week\n");
  564.    printf("%%W    - week number, taking Monday as first day of week\n");
  565.    printf("%%x    - same as '%%m/%%d/%%y'\n");
  566.    printf("%%D    - same as '%%m/%%d/%%y'\n");
  567.  
  568.    printf("%%Ddf  - Day with leading 0s\n");
  569.    printf("%%Ddv  - Day without leading 0s\n");
  570.    printf("%%DDf  - Day within the year with leading 0s\n");
  571.    printf("%%DDv  - Day within the year without leading 0s\n");
  572.    printf("%%Dmf  - Month with leading 0s\n");
  573.    printf("%%Dmv  - Month without leading 0s\n");
  574.    printf("%%Dms  - Month string\n");
  575.    printf("%%Dma  - Abbreviated month string\n");
  576.    printf("%%Dy2f - 2-digit year with leading 0s\n");
  577.    printf("%%Dy2v - 2-digit year without leading 0s\n");
  578.    printf("%%Dy4f - 4-digit year with leading 0s\n");
  579.    printf("%%Dy4v - 4-digit year without leading 0s\n");
  580.    printf("%%Dys  - Scaliger year\n");
  581.    printf("%%Dj   - JD date\n");
  582.    printf("%%DJ   - MJD date\n");
  583.    printf("%%Dwn  - Weekday number (1-7)\n");
  584.    printf("%%Dws  - Weekday string\n");
  585.    printf("%%Dwa  - Abbreviated weekday string\n");
  586.    printf("%%DWf  - Weeknumber with leading 0s\n");
  587.    printf("%%DWv  - Weeknumber without leading 0s\n");
  588.    printf("%%DMf  - Age of the moon (0-30 ?) with leading 0s\n");
  589.    printf("%%DMv  - Age of the moon (0-30 ?) without leading 0s\n");
  590.  
  591.    printf("\nDateFormat string: "); fflush(stdout);
  592.    scanf("%s",text);
  593.    DEBUG_EXIT("readdateformatstring","%s",text)
  594.    return(text);
  595.   }
  596.  
  597.  
  598.  static date_Calendars readcalendartype(void)
  599.   {
  600.    unsigned short calendartype=0;
  601.  
  602.    DEBUG_ENTER("readcalendartype")
  603.    do
  604.     {
  605.      printf("calendar type: 0=Julian; 1=Gregorian; 2=Heis: "); fflush(stdout);
  606.      scanf("%hu",&calendartype);
  607.     }
  608.    while (calendartype > 2);
  609.    DEBUG_EXIT("readcalendartype","%lu",(unsigned long)calendartype)
  610.    return((date_Calendars)calendartype);
  611.   }
  612.  
  613.  
  614.  static unsigned long readlongcardtime(void)
  615.   {
  616.    unsigned long num=0;
  617.  
  618.    DEBUG_ENTER("readlongcardtime")
  619.    do
  620.     {
  621.      printf("(unsigned long)time: "); fflush(stdout);
  622.      scanf("%lu",&num);
  623.     }
  624.    while (num > 235959);
  625.    DEBUG_EXIT("readlongcardtime","%lu",num)
  626.    return(num);
  627.   }
  628.  
  629.  
  630.  static long readlongdate(void)
  631.   {
  632.    long num=0;
  633.  
  634.    DEBUG_ENTER("readlongdate")
  635.    printf("(long)date: "); fflush(stdout);
  636.    scanf("%ld",&num);
  637.    DEBUG_EXIT("readlongdate","%ld",num)
  638.    return(num);
  639.   }
  640.  
  641.  
  642.  int main(void)
  643.   {
  644.    unsigned short    input=0,repeat=0;
  645.    date_Weekdays    wd;
  646.    date_Languages    plang;
  647.    unsigned short    d=0,m=0,h=0,s=0,len,d2,m2,h2,s2;
  648.    long            y=0,y2,ys;
  649.    char                 text[40];
  650.    unsigned long    jd,usecs;
  651.    long            secs;
  652.    bool            dst;
  653.    short        zonemin=0,pos,ds,ms;
  654.  
  655.    DEBUG_ENTER("main")
  656.    DateBase = OpenLibrary("date.library",33);
  657.    if (DateBase != NULL)
  658.     {
  659.      if (DateBase->lib_Revision >= 300)
  660.       {
  661.        do
  662.         {
  663.          printf("----------------------------------------------------------------\n");
  664.          printf("01 : JulianLeapYear            | 02 : GregorianLeapYear\n");
  665.          printf("03 : HeisLeapYear              | 04 : JulianMonthDays\n");
  666.          printf("05 : GregorianMonthDays        | 06 : HeisMonthDays\n");
  667.          printf("07 : JulianYearDays            | 08 : GregorianYearDays\n");
  668.          printf("09 : HeisYearDays              | 10 : JulianDayDiff\n");
  669.          printf("11 : GregorianDayDiff          | 12 : HeisDayDiff\n");
  670.          printf("13 : Compare2Dates             | 14 : Compare2Times\n");
  671.          printf("15 : DateText                  | 16 : JulianWeekday\n");
  672.          printf("17 : GregorianWeekday          | 18 : HeisWeekday\n");
  673.          printf("19 : JulianDaysBeforeWeekday   | 20 : GregorianDaysBeforeWeekday\n");
  674.          printf("21 : HeisDaysBeforeWeekday     | 22 : JulianDaysAfterWeekday\n");
  675.          printf("23 : GregorianDaysAfterWeekday | 24 : HeisDaysAfterWeekday\n");
  676.          printf("25 : JulianDiffDateRange       | 26 : GregorianDiffDateRange\n");
  677.          printf("27 : HeisDiffDateRange         | 28 : JYearToScaliger\n");
  678.          printf("29 : GYearToScaliger           | 30 : HYearToScaliger\n");
  679.          printf("31 : ScaligerYearToJ           | 32 : ScaligerYearToG\n");
  680.          printf("33 : ScaligerYearToH           | 34 : JSYearToJD\n");
  681.          printf("35 : GSYearToJD                | 36 : HSYearToJD\n");
  682.          printf("37 : JDtoMJD                   | 38 : MJDtoJD\n");
  683.          printf("39 : JulianToJD                | 40 : GregorianToJD\n");
  684.          printf("41 : HeisToJD                  | 42 : TimeToJD\n");
  685.          printf("43 : JDToTime                  | 44 : GregorianMoonAge\n");
  686.          printf("45 : GregorianEaster           | 46 : TimeZoneFactor\n");
  687.          printf("47 : LMT                       | 48 : TimeToSec\n");
  688.          printf("49 : SecToTime                 | 50 : JulianWeek\n");
  689.          printf("51 : GregorianWeek             | 52 : HeisWeek\n");
  690.          printf("53 : WeekdayText               | 54 : MonthText\n");
  691.          printf("55 : WeekdayShortText          | 56 : MonthShortText\n");
  692.          printf("57 : JDToJulian                | 58 : JDToGregorian\n");
  693.          printf("59 : JDToHeis                  | 60 : JulianEaster\n");
  694.          printf("61 : HeisEaster                | 62 : GregorianMoonPhase\n");
  695.          printf("63 : TimeDiff                  | 64 : DiffTime\n");
  696.          printf("65 : SetFirstWeekday           | 66 : SupplementCentury\n");
  697.          printf("67 : SetCountry                | 68 : ValidJulianDate\n");
  698.          printf("69 : ValidGregorianDate        | 70 : ValidHeisDate\n");
  699.          printf("71 : FormatTime                | 72 : ParseTime\n");
  700.          printf("73 : JulianLastMonthDay        | 74 : GregorianLastMonthDay\n");
  701.          printf("75 : HeisLastMonthDay          | 76 : NextValidJulianDate\n");
  702.          printf("77 : NextValidGregorianDate    | 78 : NextValidHeisDate\n");
  703.          printf("79 : PreviousValidJulianDate   | 80 : PreviousValidGregorianDate\n");
  704.          printf("81 : PreviousValidHeisDate     | 82 : FormatDate\n");
  705.          printf("83 : ParseDate                 | 84 : TimeToNum\n");
  706.          printf("85 : NumToTime                 | 86 : DateToNum\n");
  707.          printf("87 : NumToDate                 | 88 : JulianRangeDiff\n");
  708.          printf("89 : GregorianRangeDiff        | 90 : HeisRangeDiff\n");
  709.          printf("91 : LocalToGMT                | 92 : GMTToLocal\n");
  710.          printf("00 : Quit\n");
  711.          printf("It's your turn: "); fflush(stdout);
  712.          scanf("%hu",&input);
  713.          printf("----------------------------------------------------------------\n");
  714.          do
  715.           {
  716.            switch (input)
  717.             {
  718.              case  0 : break;
  719.              case  1 : writebool(date_JulianLeapYear(readlongyear()));
  720.                        break;
  721.              case  2 : writebool(date_GregorianLeapYear(readlongyear()));
  722.                        break;
  723.              case  3 : writebool(date_HeisLeapYear(readlongyear()));
  724.                        break;
  725.              case  4 : printf("%hu\n",date_JulianMonthDays(readshortcardmonth(),readlongyear()));
  726.                        break;
  727.              case  5 : printf("%hu\n",date_GregorianMonthDays(readshortcardmonth(),readlongyear()));
  728.                        break;
  729.              case  6 : printf("%hu\n",date_HeisMonthDays(readshortcardmonth(),readlongyear()));
  730.                        break;
  731.              case  7 : printf("%u\n",date_JulianYearDays(readlongyear()));
  732.                        break;
  733.              case  8 : printf("%u\n",date_GregorianYearDays(readlongyear()));
  734.                        break;
  735.              case  9 : printf("%u\n",date_HeisYearDays(readlongyear()));
  736.                        break;
  737.              case 10 : printf("%ld\n",date_JulianDayDiff(readshortcardday(),readshortcardmonth(),readlongyear(),readshortcardday(),readshortcardmonth(),readlongyear()));
  738.                        break;
  739.              case 11 : printf("%ld\n",date_GregorianDayDiff(readshortcardday(),readshortcardmonth(),readlongyear(),readshortcardday(),readshortcardmonth(),readlongyear()));
  740.                        break;
  741.              case 12 : printf("%ld\n",date_HeisDayDiff(readshortcardday(),readshortcardmonth(),readlongyear(),readshortcardday(),readshortcardmonth(),readlongyear()));
  742.                        break;
  743.              case 13 : printf("Date1:\n");
  744.                        d = readshortcardday();
  745.                        m = readshortcardmonth();
  746.                        y = readlongyear();
  747.                        printf("Date2:\n");
  748.                        d2 = readshortcardday();
  749.                        m2 = readshortcardmonth();
  750.                        y2 = readlongyear();
  751.                        printf("\nDate1 ");
  752.                        if (date_Compare2Dates(d,m,y,d2,m2,y2) == -1)
  753.                         {
  754.                          printf("<");
  755.                         }
  756.                        else if (date_Compare2Dates(d,m,y,d2,m2,y2) == 1)
  757.                         {
  758.                          printf(">");
  759.                         }
  760.                        else
  761.                         {
  762.                          printf("=");
  763.                         }
  764.                        printf(" Date2\n");
  765.                        break;
  766.              case 14 : printf("Time1:\n");
  767.                        h = readshortcardhour();
  768.                        m = readshortcardmin();
  769.                        s = readshortcardsec();
  770.                        printf("Time2:\n");
  771.                        h2 = readshortcardhour();
  772.                        m2 = readshortcardmin();
  773.                        s2 = readshortcardsec();
  774.                        printf("\nTime1 ");
  775.                        if (time_Compare2Times(h,m,s,h2,m2,s2) == -1)
  776.                         {
  777.                          printf("<");
  778.                         }
  779.                        else if (time_Compare2Times(h,m,s,h2,m2,s2) == 1)
  780.                         {
  781.                          printf(">");
  782.                         }
  783.                        else
  784.                         {
  785.                          printf("=");
  786.                         }
  787.                        printf(" Time2\n");
  788.                        break;
  789.              case 15 : date_DateText(readdt(),text,readlanguage(),readwordclass());
  790.                        printf("%s\n",text);
  791.                        break;
  792.              case 16 : wd = date_JulianWeekday(readshortcardday(),readshortcardmonth(),readlongyear());
  793.                        writeweekday(wd);
  794.                        break;
  795.              case 17 : wd = date_GregorianWeekday(readshortcardday(),readshortcardmonth(),readlongyear());
  796.                        writeweekday(wd);
  797.                        break;
  798.              case 18 : wd = date_HeisWeekday(readshortcardday(),readshortcardmonth(),readlongyear());
  799.                        writeweekday(wd);
  800.                        break;
  801.              case 19 : printf("%hu\n",date_JulianDaysBeforeWeekday(readshortcardday(),readshortcardmonth(),readlongyear(),readweekday()));
  802.                        break;
  803.              case 20 : printf("%hu\n",date_GregorianDaysBeforeWeekday(readshortcardday(),readshortcardmonth(),readlongyear(),readweekday()));
  804.                        break;
  805.              case 21 : printf("%hu\n",date_HeisDaysBeforeWeekday(readshortcardday(),readshortcardmonth(),readlongyear(),readweekday()));
  806.                        break;
  807.              case 22 : printf("%hu\n",date_JulianDaysAfterWeekday(readshortcardday(),readshortcardmonth(),readlongyear(),readweekday()));
  808.                        break;
  809.              case 23 : printf("%hu\n",date_GregorianDaysAfterWeekday(readshortcardday(),readshortcardmonth(),readlongyear(),readweekday()));
  810.                        break;
  811.              case 24 : printf("%hu\n",date_HeisDaysAfterWeekday(readshortcardday(),readshortcardmonth(),readlongyear(),readweekday()));
  812.                        break;
  813.              case 25 : date_JulianDiffDateRange(readshortcardday(),readshortcardmonth(),readlongyear(),readlongdays(),readlongmonths(),readlongyears(),ARG(d),ARG(m),ARG(y));
  814.                        printf("%hu.%hu.%ld\n",d,m,y);
  815.                        break;
  816.              case 26 : date_GregorianDiffDateRange(readshortcardday(),readshortcardmonth(),readlongyear(),readlongdays(),readlongmonths(),readlongyears(),ARG(d),ARG(m),ARG(y));
  817.                        printf("%hu.%hu.%ld\n",d,m,y);
  818.                        break;
  819.              case 27 : date_HeisDiffDateRange(readshortcardday(),readshortcardmonth(),readlongyear(),readlongdays(),readlongmonths(),readlongyears(),ARG(d),ARG(m),ARG(y));
  820.                        printf("%hu.%hu.%ld\n",d,m,y);
  821.                        break;
  822.              case 28 : printf("%u\n",date_JYearToScaliger(readlongyear()));
  823.                        break;
  824.              case 29 : printf("%u\n",date_GYearToScaliger(readlongyear()));
  825.                        break;
  826.              case 30 : printf("%u\n",date_HYearToScaliger(readlongyear()));
  827.                        break;
  828.              case 31 : printf("%lu\n",date_ScaligerYearToJ(readcardyear()));
  829.                        break;
  830.              case 32 : printf("%lu\n",date_ScaligerYearToG(readcardyear()));
  831.                        break;
  832.              case 33 : printf("%lu\n",date_ScaligerYearToH(readcardyear()));
  833.                        break;
  834.              case 34 : printf("%lu\n",date_JSYearToJD(readcardyear()));
  835.                        break;
  836.              case 35 : printf("%lu\n",date_GSYearToJD(readcardyear()));
  837.                        break;
  838.              case 36 : printf("%lu\n",date_HSYearToJD(readcardyear()));
  839.                        break;
  840.              case 37 : printf("%lu\n",date_JDtoMJD(readlongcarddays()));
  841.                        break;
  842.              case 38 : printf("%lu\n",date_MJDtoJD(readlongcarddays()));
  843.                        break;
  844.              case 39 : printf("%lu\n",date_JulianToJD(readshortcardday(),readshortcardmonth(),readlongyear()));
  845.                        break;
  846.              case 40 : printf("%lu\n",date_GregorianToJD(readshortcardday(),readshortcardmonth(),readlongyear()));
  847.                        break;
  848.              case 41 : printf("%lu\n",date_HeisToJD(readshortcardday(),readshortcardmonth(),readlongyear()));
  849.                        break;
  850.              case 42 : printf("%f\n",time_TimeToJD(readshortcardhour(),readshortcardmin(),readshortcardsec()));
  851.                        break;
  852.              case 43 : time_JDToTime(readrealtime(),ARG(h),ARG(m),ARG(s));
  853.                        printf("%hu:%hu:%hu\n",h,m,s);
  854.                        break;
  855.              case 44 : printf("%hu\n",date_GregorianMoonAge(readshortcardday(),readshortcardmonth(),readlongyear()));
  856.                        break;
  857.              case 45 : date_GregorianEaster(readlongyear(),ARG(d),ARG(m));
  858.                        printf("%hu.%hu.\n",d,m);
  859.                        break;
  860.              case 46 : printf("%hd\n",time_TimeZoneFactor(readshortdegree()));
  861.                        break;
  862.              case 47 : printf("%lu\n",time_LMT(readlongcardsecs(),readrealmeridian(),readrealpos()));
  863.                        break;
  864.              case 48 : printf("%lu\n",time_TimeToSec(readshortcardhour(),readshortcardmin(),readshortcardsec()));
  865.                        break;
  866.              case 49 : time_SecToTime(readlongcardsecs(),ARG(h),ARG(m),ARG(s));
  867.                        printf("%hu:%hu:%hu\n",h,m,s);
  868.                        break;
  869.              case 50 : printf("%hu\n",date_JulianWeek(readshortcardday(),readshortcardmonth(),readlongyear()));
  870.                        break;
  871.              case 51 : printf("%hu\n",date_GregorianWeek(readshortcardday(),readshortcardmonth(),readlongyear()));
  872.                        break;
  873.              case 52 : printf("%hu\n",date_HeisWeek(readshortcardday(),readshortcardmonth(),readlongyear()));
  874.                        break;
  875.              case 53 : len = date_WeekdayText(readweekday(),text,readlanguage());
  876.                        printf("%hu : %s\n",len,text);
  877.                        break;
  878.              case 54 : len = date_MonthText(readshortcardmonth(),text,readlanguage());
  879.                        printf("%hu : %s\n",len,text);
  880.                        break;
  881.              case 55 : len = date_WeekdayShortText(readweekday(),text,readlanguage());
  882.                        printf("%hu : %s\n",len,text);
  883.                        break;
  884.              case 56 : len = date_MonthShortText(readshortcardmonth(),text,readlanguage());
  885.                        printf("%hu : %s\n",len,text);
  886.                        break;
  887.              case 57 : date_JDToJulian(readjd(),ARG(d),ARG(m),ARG(y));
  888.                        printf("%hu.%hu.%ld\n",d,m,y);
  889.                        break;
  890.              case 58 : date_JDToGregorian(readjd(),ARG(d),ARG(m),ARG(y));
  891.                        printf("%hu.%hu.%ld\n",d,m,y);
  892.                        break;
  893.              case 59 : date_JDToHeis(readjd(),ARG(d),ARG(m),ARG(y));
  894.                        printf("%hu.%hu.%ld\n",d,m,y);
  895.                        break;
  896.              case 60 : date_JulianEaster(readlongyear(),ARG(d),ARG(m));
  897.                        printf("%hu.%hu.\n",d,m);
  898.                        break;
  899.              case 61 : date_HeisEaster(readlongyear(),ARG(d),ARG(m));
  900.                        printf("%hu.%hu.\n",d,m);
  901.                        break;
  902.              case 62 : jd = date_GregorianMoonPhase(readshortcardday(),readshortcardmonth(),readlongyear(),readmoonphase());
  903.                        date_JDToGregorian(jd,ARG(d),ARG(m),ARG(y));
  904.                        printf("%hu.%hu.%ld\n",d,m,y);
  905.                        break;
  906.              case 63 : secs = time_TimeDiff(readshortcardhour(),readshortcardmin(),readshortcardsec(),readshortcardhour(),readshortcardmin(),readshortcardsec());
  907.                        if (secs < 0)
  908.                         {
  909.                          secs = -secs;
  910.                         }
  911.                        time_SecToTime(secs,ARG(h),ARG(m),ARG(s));
  912.                        printf("%ld = %hu:%hu:%hu\n",secs,h,m,s);
  913.                        break;
  914.              case 64 : time_DiffTime(readshortcardhour(),readshortcardmin(),readshortcardsec(),readlongsecs(),ARG(h),ARG(m),ARG(s));
  915.                        printf("%hu:%hu:%hu\n",h,m,s);
  916.                        break;
  917.              case 65 : date_SetFirstWeekday(readweekday());
  918.                        break;
  919.              case 66 : printf("%ld\n",date_SupplementCentury(readushortyear(),readlongyear()));
  920.                        break;
  921.              case 67 : date_SetCountry(readcountry());
  922.                        break;
  923.              case 68 : printf("%hu\n",date_ValidJulianDate(readshortcardday(),readshortcardmonth(),readlongyear()));
  924.                        break;
  925.              case 69 : printf("%hu\n",date_ValidGregorianDate(readshortcardday(),readshortcardmonth(),readlongyear()));
  926.                        break;
  927.              case 70 : printf("%hu\n",date_ValidHeisDate(readshortcardday(),readshortcardmonth(),readlongyear()));
  928.                        break;
  929.              case 71 : time_FormatTime(readtimeformatstring(),readshortcardchangeday(0),readshortcardchangehour(),readbooldst(),readshortcardhour(),readshortcardmin(),readshortcardsec(),readshortzonemin(),text);
  930.                        printf("%s\n",text);
  931.                        break;
  932.              case 72 : dst = readbooldst();
  933.                        pos = time_ParseTime(readtimeformatstring(),readparsestring(),readshortcardchangeday(0),readshortcardchangehour(),ARG(dst),ARG(h),ARG(m),ARG(s),ARG(zonemin),text);
  934.                        if (pos == 0)
  935.                         {
  936.                          /* hour, min, sec, zonemin, dst */
  937.                          printf("%hu:%hu:%hu  %hd  %hu\n",h,m,s,zonemin,(unsigned short)dst);
  938.                          printf("Parsed format: %s\n",text);
  939.                         }
  940.                        else if (pos > 0)
  941.                         {
  942.                          printf("Parse error at position: %hd\n",pos-1);
  943.                         }
  944.                        else if (pos == -1)
  945.                         {
  946.                          printf("Parameter error\n");
  947.                         }
  948.                        else if (pos == -2)
  949.                         {
  950.                          printf("Format template string to long\n");
  951.                         }
  952.                        else
  953.                         {
  954.                          printf("Unknown error!\n");
  955.                         }
  956.                        break;
  957.              case 73 : printf("%hu\n",date_JulianLastMonthDay(readshortcardmonth(),readlongyear()));
  958.                        break;
  959.              case 74 : printf("%hu\n",date_GregorianLastMonthDay(readshortcardmonth(),readlongyear()));
  960.                        break;
  961.              case 75 : printf("%hu\n",date_HeisLastMonthDay(readshortcardmonth(),readlongyear()));
  962.                        break;
  963.              case 76 : date_NextValidJulianDate(readshortcardday(),readshortcardmonth(),readlongyear(),ARG(d),ARG(m),ARG(y));
  964.                        printf("%hu.%hu.%ld\n",d,m,y);
  965.                        break;
  966.              case 77 : date_NextValidGregorianDate(readshortcardday(),readshortcardmonth(),readlongyear(),ARG(d),ARG(m),ARG(y));
  967.                        printf("%hu.%hu.%ld\n",d,m,y);
  968.                        break;
  969.              case 78 : date_NextValidHeisDate(readshortcardday(),readshortcardmonth(),readlongyear(),ARG(d),ARG(m),ARG(y));
  970.                        printf("%hu.%hu.%ld\n",d,m,y);
  971.                        break;
  972.              case 79 : date_PreviousValidJulianDate(readshortcardday(),readshortcardmonth(),readlongyear(),ARG(d),ARG(m),ARG(y));
  973.                        printf("%hu.%hu.%ld\n",d,m,y);
  974.                        break;
  975.              case 80 : date_PreviousValidGregorianDate(readshortcardday(),readshortcardmonth(),readlongyear(),ARG(d),ARG(m),ARG(y));
  976.                        printf("%hu.%hu.%ld\n",d,m,y);
  977.                        break;
  978.              case 81 : date_PreviousValidHeisDate(readshortcardday(),readshortcardmonth(),readlongyear(),ARG(d),ARG(m),ARG(y));
  979.                        printf("%hu.%hu.%ld\n",d,m,y);
  980.                        break;
  981.          case 82 : date_FormatDate(readdateformatstring(),readshortcardday(),readshortcardmonth(),readlongyear(),readlanguage(),text);
  982.                    printf("%s\n",text);
  983.                     break;
  984.              case 83 : pos = date_ParseDate(readdateformatstring(),readparsestring(),readlanguage(),readcalendartype(),readjd(),ARG(d),ARG(m),ARG(y),text,ARG(plang));
  985.                        if (pos == 0)
  986.                         {
  987.                          /* day, month, year */
  988.                          printf("Parsed date    : %hu.%hu.%ld\n",d,m,y);
  989.                          printf("Parsed format  : %s\n",text);
  990.                          printf("Parsed language: %hu\n",(unsigned short)plang);
  991.                         }
  992.                        else if (pos > 0)
  993.                         {
  994.                          printf("Parse error at position: %hd\n",pos-1);
  995.                         }
  996.                        else if (pos == -1)
  997.                         {
  998.                          printf("Parameter error\n");
  999.                         }
  1000.                        else if (pos == -2)
  1001.                         {
  1002.                          printf("Format template string to long\n");
  1003.                         }
  1004.                        else
  1005.                         {
  1006.                          printf("Unknown error!\n");
  1007.                         }
  1008.                        break;
  1009.              case 84 : printf("%lu\n",time_TimeToNum(readshortcardhour(),readshortcardmin(),readshortcardsec()));
  1010.                        break;
  1011.              case 85 : time_NumToTime(readlongcardtime(),ARG(h),ARG(m),ARG(s));
  1012.                        printf("%hu:%hu:%hu\n",h,m,s);
  1013.                        break;
  1014.              case 86 : printf("%ld\n",date_DateToNum(readshortcardday(),readshortcardmonth(),readlongyear()));
  1015.                        break;
  1016.              case 87 : date_NumToDate(readlongdate(),ARG(d),ARG(m),ARG(y));
  1017.                        printf("%hu.%hu.%ld\n",d,m,y);
  1018.                        break;
  1019.              case 88 : date_JulianRangeDiff(readshortcardday(),readshortcardmonth(),readlongyear(),readshortcardday(),readshortcardmonth(),readlongyear(),ARG(ds),ARG(ms),ARG(ys));
  1020.                         printf("P%ldY%hdM%hdD\n",ys,ms,ds);
  1021.                        break;
  1022.              case 89 : date_GregorianRangeDiff(readshortcardday(),readshortcardmonth(),readlongyear(),readshortcardday(),readshortcardmonth(),readlongyear(),ARG(ds),ARG(ms),ARG(ys));
  1023.                         printf("P%ldY%hdM%hdD\n",ys,ms,ds);
  1024.                        break;
  1025.              case 90 : date_HeisRangeDiff(readshortcardday(),readshortcardmonth(),readlongyear(),readshortcardday(),readshortcardmonth(),readlongyear(),ARG(ds),ARG(ms),ARG(ys));
  1026.                         printf("P%ldY%hdM%hdD\n",ys,ms,ds);
  1027.                        break;
  1028.          case 91 : datetime_LocalToGMT(readjd(),readlongcardsecs(),readbooldst(),readshortzonemin(),&jd,&usecs);
  1029.                    printf("GMTJD=%lu GMTsecs=%lu\n",jd,usecs);
  1030.                     break;
  1031.          case 92 : dst = readbooldst();
  1032.                datetime_GMTToLocal(readjd(),readlongcardsecs(),readshortzonemin(),readshortcardchangeday(-1),readshortcardchangeday(0),readshortcardchangeday(1),readshortcardchangehour(),&jd,&usecs,&dst);
  1033.                    printf("%lu:%lu:%hu\n",jd,usecs,(unsigned short)dst);
  1034.                     break;
  1035.              default : printf("Wong number! Try again!\n");
  1036.             }
  1037.            if ((input > 0) && (input < 93))
  1038.             {
  1039.              printf("0 : Menu; >0 : test again - "); fflush(stdout);
  1040.              scanf("%hu",&repeat);
  1041.             }
  1042.            else
  1043.             {
  1044.              repeat = 0;
  1045.             }
  1046.           }
  1047.          while (repeat != 0);
  1048.         }
  1049.        while (input != 0);
  1050.       }
  1051.      CloseLibrary(DateBase);
  1052.     }
  1053.    DEBUG_EXIT("main","",0UL)
  1054.    return(0);
  1055.   }
  1056.